home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / tools / cdc / deve.lzh / CDC.MAC < prev    next >
Text File  |  1997-02-08  |  20KB  |  765 lines

  1. *-<□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□>-
  2. *
  3. *           常駐型 オーディオCD コントローラー
  4. *
  5. *                     CDC.x
  6. *
  7. *          Copyright 1994 1995 1996 TNB製作所
  8. *
  9.  
  10.  
  11. *
  12. *
  13. *    基本的にTRAP #5はSCSIを使うのがあるので、OPM割り込みなどでで使った
  14. *    りしないこと(基本的にはね)
  15. *
  16. *
  17.  
  18. CDC    macro    callname
  19.     moveq.l    #callname,d0
  20.     trap    #5
  21.     endm
  22.  
  23. _CDC_CHK_    macro
  24.     .local    _CC1,_CC2,_CC3
  25.     movem.l    d0/a0/a1,-(sp)
  26.     suba.l    a1,a1
  27.         moveq    #$81,d0
  28.         trap    #15
  29.     movea.l    d0,a1
  30.  
  31.     move.b    $25*4.w,d0
  32.     bne    _CC2            * ベクタナンバーが書かれてる
  33.     movea.l    $25*4.w,a0
  34.     cmp.l    #'CDC_',-8(a0)
  35.     bne    _CC2
  36.     cmp.l    #'trap',-4(a0)
  37.     bne    _CC2
  38.         moveq    #$81,d0
  39.         trap    #15
  40.     moveq    #-1,d0    *常駐
  41.     bra    _CC3
  42. _CC2:
  43.         moveq    #$81,d0
  44.         trap    #15
  45.     moveq    #0,d0    *非常駐
  46. _CC3:
  47.     movem.l    (sp)+,d0/a0/a1
  48.     .endm
  49.  
  50. _CDC_CHK_S    macro
  51.     .local    _CC1,_CC2,_CC3
  52.     movem.l    d0/a0/a1,-(sp)
  53.     move.b    $25*4.w,d0
  54.     bne    _CC2            * ベクタナンバーが書かれてる
  55.     movea.l    $25*4.w,a0
  56.     cmp.l    #'CDC_',-8(a0)
  57.     bne    _CC2
  58.     cmp.l    #'trap',-4(a0)
  59.     bne    _CC2
  60.     moveq    #-1,d0    *常駐
  61.     bra    _CC3
  62. _CC2:
  63.     moveq    #0,d0    *非常駐
  64. _CC3:
  65.     movem.l    (sp)+,d0/a0/a1
  66.     .endm
  67.  
  68. *---------------------------------------------------
  69. *    ドライバー常駐チェック
  70. *        trap5のベクタアドレス-8から'CDC_trap'があるかをチェック
  71. *        (アドレス+2から各ルーチンアドレスが列ぶ)
  72. *        マクロ _CDC_CHK_ が用意してある(USERモードで使うこと)
  73. *
  74. *    _CDC_CHK_
  75. *    beq    非常駐
  76. *    bne    常駐
  77. *
  78.  
  79.  
  80. *---------------------------------------------------
  81. *
  82. *    SYSTEM 関係
  83. *
  84.  
  85. _CDC_VERSION    equ    $00
  86.     *--------------------------------------------
  87.     *
  88.     *    ・ドライバーのバージョンチェック
  89.     *
  90.     *    [引  数]    なし
  91.     *    [戻り値]    d0.l = $0110
  92.     *
  93.  
  94. _CDC_INIT    equ    $01
  95.     *--------------------------------------------
  96.     *
  97.     *    ・CD 及び ドライバーの初期化をする ([CLR]キー同等)
  98.     *
  99.     *    [引  数]    なし
  100.     *    [戻り値]    なし
  101.     *
  102.     *     演奏中止し、モードもクリアします。ただし、プログラムは残
  103.     *    ります。
  104.     *
  105.     *    [参  考] CD-ROM に対し REZEROUNIT を送りますので多少時間の
  106.     *        かかる場合があります。割り込み中など処理を早くした
  107.     *        い場合、_CDC_STOP を使用するといいでしょう。
  108.     *
  109.  
  110.  
  111. *---------------------------------------------------
  112. *
  113. *    ワークアドレスゲット 関係
  114. *
  115.  
  116.  
  117. _CDC_STAT    equ    $02
  118.     *--------------------------------------------
  119.     *
  120.     *    ・CDの現在の状態の書かれたアドレスを返す
  121.     *
  122.     *    [引  数]    なし
  123.     *    [戻り値]    d0.l = ワークアドレス
  124.     *
  125.     *        offset
  126.     *        ( 0)    .dc.w    0;NoCD 1;SetCD
  127.     *        ( 2)    .dc.l    状態  0x11;演奏中,0x12;一時停止,0x13;停止
  128.     *        ( 6)    .dc.l    曲番号
  129.     *        (10)    .dc.l    演奏中の曲の経過時間 (MSF型)
  130.     *        (14)    .dc.l    CD絶対総 経過時間 (MSF型)
  131.     *        (18)    .dc.l    現在演奏曲のながさ (MSF型)
  132.     *        (22)    .dc.l    CD名アドレス
  133.     *        (26)    .dc.l    曲名アドレス
  134.     *        (30)    .dc.l    LED文字アドレス    -----以下LED部に表示される物
  135.     *        (34)    .dc.l    LED数値 曲番号
  136.     *        (38)    .dc.l    LED数値 1以上;プログラムナンバー
  137.     *                    0;表示無し -1;MAX= -2;INP= -3;Vol
  138.     *        (42)    .dc.l    LED数値 タイム (MSF型)
  139.     *        (46)    .dc.l    LEDの状態
  140.     *                    ┌bit 0 ■:停止
  141.     *                    │bit 1 >:再生
  142.     *                    │bit 2 ||:一時停止
  143.     *                   イズレカ│bit 3 >>:早送り
  144.     *                    └bit 4 <<:巻き戻し
  145.     *                    ┌bit 5 ⊂:オート
  146.     *                    └bit 6 ◯:リピート
  147.     *                      bit 7 R:ランダム
  148.     *                      bit 8 P:メモリー
  149.     *                     (bit 9 B:BGM)
  150.     *        (50)    .dc.b    入力されている数値(上)
  151.     *        (51)    .dc.b    入力されている数値(下)
  152.     *        (52)    .dc.w    LED数値 タイム のモード
  153.     *                    0;ノーマル
  154.     *                    1;リバース
  155.     *                    2;トータル
  156.     *                    3;トータルリバース
  157.     *        (54)    .dc.w    Vol数値
  158.     *        (56)    .dc.w    MasterVol数値(0ならボリューム機能無し)
  159.     *
  160.     *        表示 LED 文字アドレスは基本的に同じアドレスを返し
  161.     *        ます。内容が変わったかどうかは曲名アドレスを監視す
  162.     *        ることで可能です。
  163.     *
  164.     *     CDの現在の状態の書かれたアドレスを返します。アドレスは
  165.     *    固定されてますが、内容はトラップ時にのみ更新されるものもあ
  166.     *    ります。
  167.     *
  168.     *    [参 考] CDC.x の機能が停止ているばあい同じ値を返します。
  169.     *        ( LED 文字アドレスも0の時もあります。)
  170.     *        _CDC_POWER($35)でチェックしてください。
  171.     *
  172.  
  173. _CDC_TRACKS    equ    $03
  174.     *--------------------------------------------
  175.     *
  176.     *    ・CD-DA のCDの総合時間、曲数、曲の演奏時間、曲名の書かれ
  177.     *     たアドレスを返す
  178.     *
  179.     *    [引  数]    なし
  180.     *    [戻り値]    d0.l = 曲名リストワークアドレス
  181.     *
  182.     *        offset
  183.     *        ( 0)    .dc.w    0;NoCD 1;SetCD
  184.     *        ( 2)    .dc.l    CDC.xの最大記憶数(以下,記憶数)
  185.     *        ( 6)    .dc.l    CDの曲数
  186.     *        (10)    .dc.l    CDの全演奏時間
  187.     *        (14)    .dc.l    CDCLISTにあったか -1ならあった
  188.     *        (18)    .dcb.b    40,0        CD名        40-1文字
  189.     *        (58)    .dsb.b    (記憶数)*40    各曲の名前    40-1文字
  190.     *            .dsb.l    (記憶数)    各曲の演奏時間+拡張曲名flag
  191.     *            .dsb.l    (記憶数)    各曲のスタート時間
  192.     *                        (↑最上位ビットが立っ
  193.     *                        ていれば データトラック)
  194.     *
  195.     *     CD名、曲名以外の書き替えは禁止です。名前は変更可能です。
  196.     *
  197.  
  198.  
  199. *---------------------------------------------------
  200. *
  201. *    外部コントロール用 関係
  202. *
  203.  
  204.  
  205. _CDC_SCSI_CHK    equ    $04
  206.     *--------------------------------------------
  207.     *
  208.     *    ・SCSI の状態を返す
  209.     *
  210.     *    [引  数]    なし
  211.     *    [戻り値]    d0.l = 0 ; 使用可能
  212.     *                 < 0 ; 使用不可
  213.     *
  214.     *     TRAP #5 で SCSI を使用するものの場合このコールでチェック
  215.     *    してから使用してください。
  216.     *
  217.  
  218. _CDC_RELED    equ    $05
  219.     *--------------------------------------------
  220.     *
  221.     *    ・LED 部の書き直し、CD-ROM の状態を再チェック
  222.     *
  223.     *    [引  数]    なし
  224.     *    [戻り値]    なし
  225.     *
  226.     *     LED の書き直しを行います。TRAP #5 で CDC.x を操作した場
  227.     *    合すぐにLED部(_CDC_STAT のワークも含む)に表れないものがあ
  228.     *    ります。TIMER-C が生きている場合一秒(/Tによる)以内には書き
  229.     *    直されますが、このコールを使えばすぐに書き直されます。
  230.     *     TRAP#5を使わず外部で演奏開始等した場合もこのコールを呼べ
  231.     *    ば認識します。
  232.     *     また、入力された数値のキャンセルも行います。
  233.     *
  234.     *    [参 考] CDCコール番号の $1? はすぐに書き直されるようになっ
  235.     *        てます。
  236.     *
  237.  
  238.  
  239. *---------------------------------------------------
  240. *
  241. *    キーコントロール 関係
  242. *
  243.  
  244.  
  245. _CDC_INKEY    equ    $07
  246.     *--------------------------------------------
  247.     *
  248.     *    ・CDCのキー割り込みルーチンを呼ぶ
  249.     *
  250.     *    [引  数]    d1.b = キーボードコード
  251.     *    [戻り値]    なし
  252.     *
  253.     *     キーボードのコードを送ることで CDC をコントロールする
  254.     *
  255.     *┌─┐┌─┐                  ┌─┬─┬─┐┌─┬─┬─┬─┐
  256.     *│  ││  │            ─┬──┐│  │  │  ││  │記│登│  │
  257.     *└─┘└─┘            ─┴──┘└━┴━┴━┘└━┴─┴─┴─┘
  258.     *┌─┬─┬            ─┬──┐┌─┬─┬─┐┌─┬─┬─┬─┐
  259.     *│ES│  │              │ BS ││HM│  │DL││CL│/│*│-│
  260.     *├─┴┬┴  ┬┴┬┴┬     ┬┴┬┴──┤├─┼━┼─┤├─┼─┼─┼─┤
  261.     *│ TAB│    │E│R│     │[゚│    ││RU│RD│UN││7│8│9│+│
  262.     *├──┼    ┴┬┴┬┴     ┴┬┴┐ CR │├─┼─┼─┤├─┼─┼─┼─┤
  263.     *│                  │]ム│    ││  │↑│  ││4│5│6│=│
  264.     *                  ┴┬┴──┤│←├─┤→│├─┼─┼─┼─┤
  265.     *                │    ││  │↓│  ││1│2│3│  │
  266.     *                ┴┬──┘├─┴┬┴─┤├─┼─┼─┤EN│
  267.     *                  │      │    │    ││0│,│.│  │
  268.     *                ━┘      └──┴──┘└─┴─┴─┴─┘
  269.     *
  270.     *┌─┐┌─┐                  ┌─┬─┬─┐┌─┬─┬─┬─┐
  271.     *│  ││  │            ─┬──┐│  │  │  ││  │52│53│  │
  272.     *└─┘└─┘            ─┴──┘└━┴━┴━┘└━┴─┴─┴─┘
  273.     *┌─┬─┬            ─┬──┐┌─┬─┬─┐┌─┬─┬─┬─┐
  274.     *│01│  │              │ 0F ││36│  │37││3F│40│41│42│
  275.     *├─┴┬┴  ┬┴┬┴┬        ┬┴┬┴──┤├─┼━┼─┤├─┼─┼─┼─┤
  276.     *│ 10 │    │13│14│        │1C│    ││38│39│3A││43│44│45│46│
  277.     *├──┼    ┴┬┴┬┴        ┴┬┴┐ 1D │├─┼─┼─┤├─┼─┼─┼─┤
  278.     *│                  │29│    ││  │3C│  ││47│48│49│4A│
  279.     *                  ┴┬┴──┤│3B├─┤3D│├─┼─┼─┼─┤
  280.     *                │    ││  │3E│  ││4B│4C│4D│  │
  281.     *                ┴┬──┘├─┴┬┴─┤├─┼─┼─┤4E│
  282.     *                  │      │    │    ││4F│50│51│  │
  283.     *                ━┘      └──┴──┘└─┴─┴─┴─┘
  284.     *
  285.     *            $3F    [CLR]        = CDC.x初期化
  286.     *            $4E    [ENT]        = 演奏
  287.     *            $4A    [=]        = PAUSE/RESUME
  288.     *            $3B/$3D    [←][→]    = 巻戻し/早送り
  289.     *            $38    [R-UP]        = 1曲戻し *
  290.     *            $39    [R-DN]        = 1曲送り
  291.     *            $3A    [UNDO]        = リピートモード
  292.     *
  293.     *        などキー操作と同じ。他に
  294.     *
  295.     *            $52    [記号入力]= 数値入力キャンセル。LEDの初期化にもなる
  296.     *                        (CDC_RELEDと同じ機能です。)
  297.     *
  298.     *        があります(キー操作では出来ないようになってます)。
  299.     *
  300.     *     演奏開始の場合等、他のコールと違うのは入力されている数値
  301.     *    に影響される点です。もしこのコールだけで指定の曲演奏したい
  302.     *    場合、まず、数値キーコードを送ってから演奏すれば可能です。
  303.     *
  304.     *     [←][→](サーチキー)を使う場合は、連続で送ったあと、最後
  305.     *    に 0 を送ってください。この時サーチ先から演奏されます。
  306.     *
  307.     *     $38は連続でコマンドを送ったりすることで動作が違うので単
  308.     *    純に、曲の頭から、1曲戻すと言う場合 _CDC_MVPLAY($13)を使
  309.     *    用してください。
  310.     *
  311.     *    [★注意]ver 1.06以前では
  312.     *            $42/$46    [-][+]    = 巻戻し/早送り
  313.     *        でした。。
  314.     *
  315.  
  316.  
  317. *---------------------------------------------------
  318. *
  319. *    プログラム関係
  320. *
  321.  
  322.  
  323. _CDC_PROG    equ    $08
  324.     *--------------------------------------------
  325.     *
  326.     *    ・CDCのプログラムワークアドレスを返す
  327.     *
  328.     *    [引  数]    なし
  329.     *    [戻り値]    d0.l = メモリワークアドレス
  330.     *
  331.     *        ( 0)    .dc.w    プログラム数
  332.     *        ( 2)    .ds.b    256,曲ナンバー
  333.     *
  334.     *     プログラムの直接書き替えも可能。ただし、書き替えたあとも
  335.     *    う一度 _CDC_PROG をコールすること。プログラムを全部消去し
  336.     *    たい場合、プログラム数を0に書き替えることで可能。
  337.     *
  338.     *    [★注意]ver 1.08以前では
  339.     *            ( 2)    .ds.b    100,曲ナンバー
  340.     *        でした。。
  341.     *
  342.  
  343. _CDC_PROGIN    equ    $09
  344.     *--------------------------------------------
  345.     *
  346.     *    ・指定曲ナンバーをプログラムに記憶する
  347.     *
  348.     *    [引  数]    d1.l = 曲ナンバー
  349.     *                 = -1 ; 現在プログラムされている数のみ返す
  350.     *            d2.l = プログラムナンバー (0~)
  351.     *                 = -1 ;プログラムの最後に追加します ([.])
  352.     *    [戻り値]    d0.l = 現在プログラムされている数 ; 正常終了
  353.     *                 < 0 ; エラー(プログラム100を越える)
  354.     *
  355.  
  356. _CDC_PROGOUT    equ    $0A
  357.     *--------------------------------------------
  358.     *
  359.     *    ・最後のプログラムの曲をプログラムから消す
  360.     *
  361.     *    [引  数]    なし
  362.     *    [戻り値]    d0.l = 現在プログラムされている数 ; 正常終了
  363.     *                 < 0 ; エラー
  364.     *
  365.  
  366. _CDC_PROGTIME    equ    $0F
  367.     *--------------------------------------------
  368.     *
  369.     *    ・プログラムされた曲の総演奏時間を計算する
  370.     *
  371.     *    [引  数]    なし
  372.     *    [戻り値]    d0.l = ワークアドレス
  373.     *                 < 0 ; エラー
  374.     *        ( 0)    .dc.l    演奏予定総長さ
  375.     *        ( 4)    .dc.l    演奏された曲の合計長さ
  376.     *
  377.     *     プログラムされて曲の合計と演奏された曲の合計長さを返しま
  378.     *    す。ただし、演奏されていない時は0,0がかえります。演奏中
  379.     *    にプログラムの変更があると数値がおかしくなることがあります
  380.     *    (変更されない)。
  381.     *
  382.     *    [参 考]ランダム演奏時にも、ノーマル時にも有効。
  383.     *        意味がないので、そのうち消えるかも知れないコール
  384.     *        使用禁止 ^^;
  385.     *
  386.  
  387. *---------------------------------------------------
  388. *
  389. *    演奏関係
  390. *
  391.  
  392.  
  393. _CDC_PLAY    equ    $10
  394.     *--------------------------------------------
  395.     *
  396.     *    ・曲ナンバー指定によりノーマル演奏開始
  397.     *
  398.     *    [引  数]    d1.l = 開始曲ナンバー (0ならCDC管理演奏)
  399.     *            d2.l = 終了曲ナンバー (-1なら最後まで)
  400.     *    [戻り値]    d0.l = 0 ; 正常終了
  401.     *                 < 0 ; エラー
  402.     *
  403.  
  404. _CDC_PAUSE    equ    $11
  405.     *--------------------------------------------
  406.     *
  407.     *    ・CD演奏の一時停止。演奏していない場合何もしない
  408.     *
  409.     *    [引  数]    なし
  410.     *    [戻り値]    なし
  411.     *
  412.  
  413. _CDC_RESUME    equ    $12
  414.     *--------------------------------------------
  415.     *
  416.     *    ・CD演奏の一時停止の解除。演奏中は何もしない
  417.     *
  418.     *    [引  数]    なし
  419.     *    [戻り値]    なし
  420.     *
  421.  
  422. _CDC_MVPLAY    equ    $13
  423.     *--------------------------------------------
  424.     *
  425.     *    ・CD演奏の曲を変える
  426.     *
  427.     *    [引  数]    d1.l = 現在演奏中の曲からの ±値 (-1~1)
  428.     *    [戻り値]    d0.l = 0 ; 正常終了
  429.     *                 < 0 ; エラー
  430.     *
  431.     *     0を指定することで演奏中の曲を最初から。プログラムされて
  432.     *    いる場合、プログラム順に曲を移動、演奏します。ランダムモー
  433.     *    ド時は、どの曲にいくか判りません。
  434.     *
  435.  
  436. _CDC_BGM    equ    $14
  437.     *--------------------------------------------
  438.     *
  439.     *    ・指定アドレス間を繰り返し演奏する(BGMモード演奏)
  440.     *
  441.     *    [引  数]    d1.l = 開始トラックor開始アドレス
  442.     *            d2.l = 終了アドレス(0ならその曲の最後の数値)
  443.     *            d3.l = ループアドレス(0ならd1と同じ値に)
  444.     *            d4.l = ループ終了アドレス(0ならd2と同じ値に)
  445.     *    [戻り値]    d0.l = 0 ; 正常終了
  446.     *                 < 0 ; エラー
  447.     *
  448.     *     d1.l は $100 未満であればトラック指定になります。
  449.     *     d1.l が $100 以上であればアドレス指定になります。
  450.     *
  451.     *    _CDC_MODE の戻り値が bit4;BGMが立ちます
  452.     *
  453.     *    [参  考] 基本的に BGMとして CD を使う場合のコールなので
  454.     *        LED部にBGMモードとは表示されません。
  455.     *        使う場合、キーボードからのコントロールを殺したほう
  456.     *        がいいでしょう。
  457.     *                ZCDC.x で使用してます。
  458.     *
  459.  
  460. _CDC_STOP    equ    $15
  461.     *--------------------------------------------
  462.     *
  463.     *    ・CD演奏を停止する
  464.     *
  465.     *    [引  数]    なし
  466.     *    [戻り値]    なし
  467.     *
  468.     *     _CDC_INIT に比べ高速です。割り込み中など処理が止まるのを
  469.     *    避けたい場合のみ使用してください。CDC.x 内部では「停止」に
  470.     *    なりますが、CD-ROM自体の状態は一時停止になっています。また、
  471.     *    LED の書き替えもすぐに行われません。
  472.     *
  473.  
  474.  
  475. _CDC_PLAYWAIT    equ    $1D
  476.     *
  477.     *    ・演奏開始後、ステイタス待ちをする( /PM 使用時対策用)
  478.     *
  479.     *    [引  数]    なし
  480.     *    [戻り値]    なし
  481.     *
  482.     *     /PM 使用時、演奏開始を待たずに次の作業に移ります。が、タ
  483.     *    イミングを取るためにはこれではまずい場合があります(ゲーム
  484.     *    のBGMなど)。その時、これを実行します。演奏開始するまで待ち
  485.     *    ます。
  486.     *     /PM 使用していない場合や、演奏開始状態でない場合は無視さ
  487.     *    れます。
  488.     *
  489.  
  490.  
  491. _CDC_VOL    equ    $1E
  492.     *
  493.     *    ・ボリュームを変更する
  494.     *
  495.     *    [引  数]    d1.l = 0~255 ; ボリュームを指定
  496.     *                 = -1     ; 現在のボリューム値を返す
  497.     *    [戻り値]    d0.l = 現在のボリューム値
  498.     *                 = -1 ; ボリューム非対応,エラー
  499.     *
  500.     *
  501.     *    [参  考] マスターボリュームは _CDC_STAT で確認出来ます。
  502.     *
  503.  
  504. _CDC_FADEOUT    equ    $1F
  505.     *
  506.     *    ・演奏をフェードアウトする。
  507.     *
  508.     *    [引  数]    d1.l = 0      ; フェードアウト開始
  509.     *                 = 1~255 ; フェードアウトの速度指定
  510.     *                 = -1     ; 現在のフェードアウト速度を返す
  511.     *    [戻り値]    d0.l = 現在のフェードアウト速度
  512.     *                 = -1 ; フェードアウトが出来ない。
  513.     *                 = -2 ; 既にフェードアウト始めている。
  514.     *
  515.  
  516.  
  517. *---------------------------------------------------
  518. *
  519. *    CDC DRIVE MODE 関係
  520. *
  521.  
  522.  
  523. _CDC_DRIVE    equ    $30
  524.     *--------------------------------------------
  525.     *
  526.     *    ・CDCの心臓を動かす
  527.     *
  528.     *    [引  数]    なし
  529.     *    [戻り値]    なし
  530.     *
  531.     *     TIMER-Cを乗っ取っていると、CDCが動きません。が、直接ある
  532.     *    一定期でこれをコールすれば大丈夫です。
  533.     *
  534.     *    [参 考] MUTERMモード対応にも対応してます。が、使用するこ
  535.     *        とはないでしょう。
  536.     *
  537.  
  538. _CDC_MODE    equ    $31
  539.     *--------------------------------------------
  540.     *
  541.     *    ・CDCの演奏モードを設定(トグル)
  542.     *
  543.     *    [引  数]    d1.l = モード
  544.     *                 =  0 ; オート
  545.     *                 =  1 ; リピート
  546.     *                 =  2 ; ランダム
  547.     *                 = -1 ; モードののみ返す
  548.     *    [戻り値]    d0.l = 現在のモード ; 正常終了
  549.     *        現在のモードは
  550.     *                bit0 :オート
  551.     *                bit1 :リピート
  552.     *                bit2 :ランダム
  553.     *                bit3 :メモリー
  554.     *                [bit4 :BGM]
  555.     *
  556.     *     設定は _CDC_INKEY($7)でそれぞれのキーコードを、送った時
  557.     *    を同じ処理をします(ただし入力数字は無視されます)ので、場合
  558.     *    により演奏開始されます。
  559.     *
  560.     *     モード変更はトグルで行われるので一度モードを調べてから設
  561.     *    定したほうがいいでしょう。
  562.     *
  563.  
  564. _CDC_KEYMODE    equ    $32
  565.     *--------------------------------------------
  566.     *
  567.     *    ・CDCのキー操作関係のモードを設定
  568.     *
  569.     *    [引  数]    d1.l = モード
  570.     *                 0 ; 一切受け付けない (-KS)
  571.     *                 1 ; 受け付ける
  572.     *                -1 ; 現在のモードのみ返す
  573.     *    [戻り値]    d0.l = 前のモード ; 正常終了
  574.     *
  575.  
  576. _CDC_LED    equ    $33
  577.     *--------------------------------------------
  578.     *
  579.     *    ・CDCのLEDの表示モードを設定する
  580.     *
  581.     *    [引  数]    d1.l =  0 ; 非表示モード
  582.     *                    1 ; 表示モード
  583.     *                    2 ; 左部のみ表示モード
  584.     *                 = -1 ; 現在の値
  585.     *    [戻り値]    d0.l = 前のモード ; 正常終了
  586.     *                 < 0 ; エラー
  587.     *
  588.     *     表示モードにしてもTEXTが使われていると表示されません
  589.     *
  590.     *    [参 考] Trapコールで強制LED表示モードはありません
  591.     *
  592.     *    [★注意]ver 1.06以前では
  593.     *            [引  数]    d1.l =  1 ; 非表示モード
  594.     *                            0 ; 表示モード
  595.     *        でした。。
  596.     *
  597.  
  598. _CDC_TIMING    equ    $34
  599.     *--------------------------------------------
  600.     *
  601.     *    ・CDチェックする間隔設定(基本的に使用禁止)
  602.     *
  603.     *    [引  数]    d1.w =  1/100s単位
  604.     *                 = -1 ; 現在の値
  605.     *    [戻り値]    d0.w = 前の値(単位1/100s) ; 正常終了
  606.     *                 < 0 ; エラー
  607.     *
  608.     *     間隔チェックには IOCS の TIMER-C のワークを見ているので
  609.     *    TIMER-C を変更している場合、意味がありません。
  610.     *
  611.  
  612. _CDC_POWER    equ    $35
  613.     *--------------------------------------------
  614.     *
  615.     *    ・CDC の機能を制御
  616.     *
  617.     *    [引  数]    d1.l =  1 ; 機能する
  618.     *                 =  0 ; 停止する ([ESC])
  619.     *                 = -1 ; 現在の値
  620.     *    [戻り値]    d0.l = 前の値 ; 正常終了
  621.     *                 < 0 ; エラー
  622.     *
  623.     *     機能を停止しても trap #5 での操作も可能ですが、_CDC_DRIVE
  624.     *    を常用する必要があります。
  625.     *
  626.  
  627. _CDC_TRACKMODE    equ    $36
  628.     *--------------------------------------------
  629.     *
  630.     *    ・トラック記憶モードを変える(演奏も停止します)。
  631.     *
  632.     *    [引  数]    d1.l =  0 ; タイトルリストファイルを参照、
  633.     *                 拡張トラック設定
  634.     *                 =  1 ; 拡張トラック設定解除
  635.     *    [戻り値]    なし
  636.     *
  637.     *     タイトルリストファイルからの登録を行います。タイトルリス
  638.     *    トファイルを変更した時これを実行すれば読み込んでくれます。
  639.     *
  640.     *     ジュークボックスモード時は使用禁止です、
  641.     *
  642.     *    [参 考] d1.l==1 は主にZCDC.xで使用します。普通の音楽演奏の
  643.     *        場合は意味がないでしょう。
  644.     *
  645.  
  646. _CDC_KEYCANSEL    equ    $37
  647.     *--------------------------------------------
  648.     *
  649.     *    ・CDCのキー操作無効を個別に設定
  650.     *
  651.     *    [引  数]    d1.l = 無効にするキーボードコード
  652.     *                 = -1 ; 全てもとに戻す
  653.     *    [戻り値]    なし
  654.     *
  655.     *     アプリでキーボードからのコントロールが困る物がある場合、
  656.     *    特定のキーのみ無効に出来ます。アプリ終了時もとに戻すこと。
  657.     *
  658.     *    [参 考] スイッチ -B[n]でも、もとに戻すことが出来ます。
  659.     *
  660.  
  661. _CDC_TIMELED    equ    $38
  662.     *--------------------------------------------
  663.     *
  664.     *    ・CDCのTIMEのLEDの表示モードを設定する
  665.     *
  666.     *    [引  数]    d1.l =  0 ; ノーマル
  667.     *                    1 ; リバース
  668.     *                    2 ; トータル
  669.     *                    3 ; トータルリバース
  670.     *                 = -1 ; 現在の値
  671.     *    [戻り値]    d0.l = 前のモード ; 正常終了
  672.     *                 < 0 ; エラー
  673.     *
  674.  
  675. _CDC_LEDXY    equ    $39
  676.     *--------------------------------------------
  677.     *
  678.     *    ・CDCのLEDの座標を得る
  679.     *
  680.     *    [引  数]    なし
  681.     *    [戻り値]    d0.wh = X座標
  682.     *            d0.wl = Y座標
  683.     *
  684.     *    [★注意]ver 1.08以降新規です。
  685.     *
  686.  
  687. _CDC_SCSIID    equ    $3a
  688.     *--------------------------------------------
  689.     *
  690.     *    ・CDCの管理しているSCSI-ID(LUN)を得る
  691.     *
  692.     *    [引  数]    なし
  693.     *    [戻り値]    d0.wh = LUN
  694.     *            d0.wl = ID
  695.     *
  696.     *    [★注意]ver 1.09以降新規です。
  697.     *
  698.  
  699. _CDC_EJEEMU    equ    $3b
  700.     *--------------------------------------------
  701.     *
  702.     *    ・CDCの管理しているSCSI機器が一度エジェクトされた事にする
  703.     *
  704.     *    [引  数]    なし
  705.     *    [戻り値]    なし
  706.     *
  707.     *    [★注意]ver 1.09以降新規です。
  708.     *
  709.  
  710. _CDC_CHGLUN    equ    $3c
  711.     *--------------------------------------------
  712.     *
  713.     *    ・LUNを切り換える
  714.     *
  715.     *    [引  数]    d1.l =  LUN (0~7)
  716.     *                 = -1 ; 現在の値
  717.     *    [戻り値]    d0.l = LUN (0~7) ; 正常終了
  718.     *                 = 100 ; ジュークボックスモード
  719.     *                 < 0 ; エラー
  720.     *
  721.     *     LUNを切り換えます。切り換えたと同時にタイトルリストファ
  722.     *    イルからの登録も行います。
  723.     *
  724.     *    [★注意]ver 1.09以降新規です。
  725.     *
  726.  
  727. *---------------------------------------------------
  728. *
  729. *    CDC ERROR CORDS
  730. *
  731. *
  732. * -1    ; 
  733. * -2    ; Play Audio Begin ・ Play Audio Block Count Command error'演奏できない'
  734. * -3    ; Start Track Address or ReadTOC Command error'演奏できない'
  735. * -4    ; 指定された曲番号は、存在しない
  736. * -5    ; Leadout Track Address or ReadTOC Command error
  737. * -100    ; CD-ROM でない 準備されていない
  738. *
  739. *
  740. *    戻り値としてd0が使われていなくても破壊されます.
  741. *
  742. *
  743. *---------------------------------------------------
  744. *
  745. *    CDC バージョンの差
  746. *
  747. *
  748. *    以下のコールは_CDC_VERSIONで得られる数値の$107未満と以降では引数等に違
  749. *    ってしまっています。ご注意下さい。
  750. *
  751. *        _CDC_INKEY    equ    $07
  752. *        _CDC_LED    equ    $33
  753. *
  754. *    以下のコールは_CDC_VERSIONで得られる数値の$108以降新規です。
  755. *
  756. *        _CDC_LEDXY    equ    $39
  757. *
  758. *    以下のコールは_CDC_VERSIONで得られる数値の$109以降新規です。
  759. *
  760. *        _CDC_SCSIID    equ    $3a
  761. *        _CDC_EJEEMU    equ    $3b
  762. *        _CDC_CHGLUN    equ    $3b
  763. *
  764. *
  765.